home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 January / macformat46.iso / Shareware Plus / Developers / Library / NGL 2.0 Demo / NGL2.0.0(E)Demo / Hide Snow Demo / Hide Data Snow.c next >
Encoding:
C/C++ Source or Header  |  1996-10-03  |  3.6 KB  |  190 lines

  1. /*============================================================
  2.  
  3.                     Hide data snow sample program
  4.                     
  5. ============================================================*/
  6.  
  7. #include        "N_Library.h"
  8.  
  9. void            Main_Process(void);
  10. void            Key_Process(void);
  11.  
  12. short            Data_Rsrc = 0;
  13. long                routine_step = 0;
  14. long                wait;
  15. short            S1_X[1024];
  16. short            S1_Y[1024];
  17. unsigned short        S1_D[1024];
  18. short            S1_MX[1024];
  19. short            S1_MY[1024];
  20. short            r = 0,rs=0;
  21. short            speed  = -4;
  22. Boolean            q = false;
  23. Boolean            kb=false;
  24. EventRecord        theEvent;
  25.  
  26. void main(void)
  27. {
  28.     WindowPtr    window;
  29.     short         i;
  30.  
  31.     ToolboxInit();
  32.     ColorCheck();
  33.     HideMenuBar();
  34.     HideCursor();
  35.     window = GetNewWindow (128,nil,(WindowPtr)-1L );
  36.     N_Window_Set(window,-(window->portBits.bounds.left),-(window->portBits.bounds.top),640,480);
  37.     SetPort((GrafPtr)window);
  38.     N_Sp_Make(640,480);
  39.     N_Cel_Make2(640,480);
  40.  
  41.     N_Sp_Load("\pSnow Sprites");                                
  42.     N_Pict_Load("\pSnow Graphics");                                    
  43.     N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                        
  44.  
  45.     routine_step = 0;
  46.     for (i = 0;i!=1024;i++)
  47.     {
  48.         N_Cel_Kill(i);                                        
  49.         S1_X[i] = GetRandom(0,640*32)-640*16;                
  50.         S1_Y[i] = GetRandom(0,480*32)-480*16;
  51.         S1_D[i] = GetRandom(1,255);                            
  52.         S1_MX[i] = GetRandom(0,30)-15;
  53.         S1_MY[i] = GetRandom(0,30)-15;
  54.     }
  55.  
  56.     N_Pict_Effect (131,0,0,3,0,0);
  57.     for (i=0;i!=32;i++)
  58.     {
  59.         Delay(1,&wait);
  60.         N_Pict_Effect (131,0,0,3,1,0);
  61.         N_Pict_Effect (131,0,0,3,1,0);
  62.         N_Pict_Effect (131,0,0,3,1,0);
  63.         N_Pict_Effect (131,0,0,3,1,0);
  64.         N_Pict_Effect (131,0,0,3,1,0);
  65.         N_Pict_Effect (131,0,0,3,1,0);
  66.         N_Pict_Effect (131,0,0,3,1,0);
  67.         N_Pict_Effect (131,0,0,3,1,0);
  68.     }
  69.     do
  70.     {
  71.         Main_Process();
  72.     }
  73.     while (q==false);
  74.     FlushEvents( everyEvent, 0 ); 
  75.     ShowMenuBar();
  76.     ShowCursor();
  77.     ColorRevert();
  78. }
  79.  
  80. void Main_Process(void)
  81. {
  82.     short            i,x,y,ii,p = 0,dist,bt;
  83.     long                wrk;
  84.     long                xx,yy;
  85.     unsigned long        dum;
  86.     char                key;
  87.     Boolean            emp;
  88.     Point                mp;
  89.  
  90.     Key_Process();
  91.     routine_step++;
  92.     
  93.     if (routine_step<64)
  94.     {
  95.         N_Cel_Put(1799,0x80000000+256,212,(short)(routine_step*4-92));
  96.     }
  97.     if (routine_step>=64 && routine_step<192)
  98.     {
  99.         N_Cel_Put(1799,0x80000000+256,212,164);
  100.     }        
  101.     if (routine_step>=192 && routine_step <300)
  102.     {
  103.         N_Cel_Put(1799,0x80000000+256,212,(short)164+((routine_step-192)*5));
  104.     }
  105.  
  106.     if (routine_step < 300) ii = routine_step;
  107.         else    ii = 300;
  108.  
  109.     for (i = 0;i!=ii;i++)
  110.     {
  111.         S1_X[i] += S1_MX[i]+GetRandom(0,10)-5;
  112.         if (S1_X[i]<-640*16)S1_X[i]=640*16;
  113.         if (S1_X[i]>640*16)S1_X[i]=-640*16;
  114.         S1_Y[i] += S1_MY[i]+GetRandom(0,10)-5;
  115.         if (S1_Y[i]<-640*16)S1_Y[i]=640*16;
  116.         if (S1_Y[i]>640*16)S1_Y[i]=-640*16;
  117.         x = S1_X[i];
  118.         y = S1_Y[i];
  119.         wrk = S1_D[i];
  120.         wrk = wrk / 16;
  121.         wrk = 16-wrk;
  122.         if (wrk>14) wrk = 15;
  123.         N_Cel_3D_Put(i,0x80000000+30+wrk,x,y,320,240,r,S1_D[i]);        
  124.         dist = S1_D[i] + speed;
  125.         if (dist <  0)                                                
  126.         {
  127.             dist = 512+dist;
  128.             N_Cel_Get(i,&emp,&dum,&x,&y);
  129.             N_Sp_Put(0x80000000+46,x-4,y-4);                        
  130.             S1_X[i] = GetRandom(0,640*32)-640*16;                    
  131.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  132.         }            
  133.  
  134.         if (dist > 255)                                                
  135.         {
  136.             dist = dist -256;            
  137.             S1_X[i] = GetRandom(0,640*32)-640*16;                    
  138.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  139.         }            
  140.         S1_D[i] = dist;
  141.     }
  142.     r=r+rs;
  143.     N_Cel_Loop2(0,0);                                                
  144.  
  145. }
  146.  
  147. void Key_Process(void)
  148. {
  149.     char        ky;
  150.     
  151.     ky = N_Key_Get();
  152.     if (kb == false)
  153.     {
  154.         if ((ky & 0x01) !=0)
  155.         {
  156.             speed++;
  157.             kb = true;
  158.         }    
  159.         if ((ky & 0x02) !=0)
  160.         {
  161.             rs--;
  162.             kb = true;
  163.         }
  164.         if ((ky & 0x04) !=0)
  165.         {
  166.             rs++;
  167.             kb = true;
  168.         }
  169.         if ((ky & 0x08) !=0)
  170.         {
  171.             speed--;
  172.             kb = true;
  173.         }
  174.  
  175.         if ((ky & 0x40) !=0)
  176.         {
  177.             N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                    
  178.             kb = true;
  179.         }
  180.     }    
  181.  
  182.     if ((ky & 0x80) !=0)
  183.     {
  184.          q = true;
  185.     }
  186.     if (ky==0) kb = 0;
  187. }
  188.  
  189.  
  190.